package com.wxmit.module.system.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.wxmit.base.validate.AddGroup;
import com.wxmit.base.validate.UpdateGroup;
import com.wxmit.system.base.core.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @Description SysRole
 * @Author huangxiong
 * @Date 2022/7/11 11:48
 * @Version V1.0
 */
@Data
@TableName("sys_role")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SysRole extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** 角色ID */
    @TableId(type = IdType.AUTO)
    @NotNull(message = "角色id不能为空",groups ={ UpdateGroup.class})
    private Long id;

    /** 角色名称 */
    @NotNull(message = "角色名称不能为空",groups ={ AddGroup.class , UpdateGroup.class})
    private String roleName;

    /** 角色权限字符 */
    @NotNull(message = "角色标识符不能为空",groups ={ AddGroup.class , UpdateGroup.class})
    private String roleKey;


    /** 数据范围（1：所有数据权限；2：自定义数据权限；3：本部门数据权限；4：本部门及以下数据权限） */
    private String dataScope;

    /** 角色状态（0正常 1停用） */
    private String status;

    /**
     *  角色首页
     */
    @NotNull(message = "角色首页不能为空",groups ={ AddGroup.class , UpdateGroup.class})
    private String homePage;

    @TableField(exist = false)
    private List<String> permissions;

    @TableField(exist = false)
    private List<Long> deptIds;

    @TableField(exist = false)
    private List<Long> menuIds;

}
